package com.first.orange.mapper;


import com.first.orange.beans.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created on 2021/7/5.
 * <p>
 * Author: Lcywings
 * <p>
 * Description:个人中心数据接口
 */
public interface PersonMapper {

    /**
     * @author : Lcywings
     * @date : 2021/7/5 15:25
     * @acl : true
     * @description : 根据用户id，获取用户详情
     */
    UserInformation getUserInformation(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/5 15:25
     * @acl : true
     * @description : 根据用户id，获取优惠劵数量
     */
    Integer getCouponTotal(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/5 16:37
     * @acl : true
     * @description : 获取订单
     */
    List<Orders> getOrders(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/5 17:05
     * @acl : true
     * @description : 根据货物ID，获取订单中的商品
     */
    Product getProduct(Integer productId);

    /**
     * @author : Lcywings
     * @date : 2021/7/6 16:13
     * @acl : true
     * @description : 删除用户信息
     */
    void deletePerson(Integer userInfoId);

    /**
     * @author : Lcywings
     * @date : 2021/7/6 16:13
     * @acl : true
     * @description : 添加用户信息
     */
    void addPerson(UserInformation userInformation);

    /**
     * @author : Lcywings
     * @date : 2021/7/6 16:32
     * @acl : true
     * @description : 更新用户数据
     */
    void modPerson(UserInformation userInformation);

    /**
     * @author : Lcywings
     * @date : 2021/7/7 10:51
     * @acl : true
     * @description :根据id，查询用户登录表
     */
    UserLogin selectUserLoginByUserId(Integer userId);


    /**
     * @author : Lcywings
     * @date : 2021/7/7 11:22
     * @acl : true
     * @description : 根据用户id修改密码
     */
    void updatePassword(@Param("userId") Integer userId, @Param("password") String password);


    /**
     * @author : Lcywings
     * @date : 2021/7/7 16:14
     * @acl : true
     * @description : 更新用户头像
     */
    void updateUserPic(@Param("userProfile") String userProfile, @Param("userId") Integer userId);


    /**
     * @author : Lcywings
     * @date : 2021/7/8 11:23
     * @acl : true
     * @description : 查询用户足迹
     */
    List<UserFootprint> selectUserFootByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 12:06
     * @acl : true
     * @description : 根据商品Id查商品
     */
    Product selectProductByproductId(Integer productId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 14:34
     * @acl : true
     * @description : 根据用户id和足迹id删足迹
     */
    void deleteFootByuserIdAnd(@Param("footPrintId") Integer footPrintId,
                               @Param("userId") Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 11:23
     * @acl : true
     * @description : 用户收藏
     */
    List<UserCollection> queryUserCollectionByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 16:44
     * @acl : true
     * @description : 根据用户id和足迹id删收藏
     */
    void deleteCollectionByUserIdAndCollectionId(@Param("collectionId") Integer collectionId,
                                                 @Param("userId") Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 11:32
     * @acl : true
     * @description : 获取商品地址
     */
    List<ShopAddress> getShopAddressByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 12:23
     * @acl : true
     * @description : 删除地址，根据用户和地址id
     */
    void deleteAddrByUserIdAndShopId(@Param("shopId") Integer shopId, @Param("userId") Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 16:02
     * @acl : true
     * @description : 新增地址
     */
    void insertShopAddressByUserId(ShopAddress shopAddress);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 16:32
     * @acl : true
     * @description : 清除默认地址
     */
    void updateAllDefShopId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 16:32
     * @acl : true
     * @description : 设置默认地址
     */
    void updateDefShopId(@Param("defShopId") Integer defShopId, @Param("userId") Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/10 0:34
     * @acl : true
     * @description :
     */
    List<Orders> getOrdersByOrderNumAndUserId(@Param("orderNum") String orderNum, @Param("userId") Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/10 2:10
     * @acl : true
     * @description : 删除订单
     */
    void deleteOrderByuserIdAndOrderNum(@Param("orderNum") String orderNum, @Param("userId") Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 14:45
     * @acl : true
     * @description : 根据UserId获取用户详细信息
     */
    UserInformation queryUserInfoByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 14:50
     * @acl : true
     * @description : 为新用户添加初始信息
     */
    void insertInitUserByUserId(UserInformation userInformation);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 16:30
     * @acl : true
     * @description : 查询所有评论
     */
    List<Comments> selectCommentsByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 16:38
     * @acl : true
     * @description : 查询所有商品
     */
    List<Product> queryProductByUserId();
}
